====================== Linker Definition File ====================== Each ARM modes has it's own SP (stack pointer) register. Actually User and System share the same SP. When the system starts each SP should be set to point to a place in memory that it can use as its stack. The values for these locations could be hardcoded in the startup file startup.s but a more flexible way to do it is to have the locations set by the linker at compile time. The GNU linker uses a linker definition or ld file to tell it how to layout the memory. The file is used to define the starting location and size of RAM, Flash, static values, stacks, and .bss sections. See :doc:`lpc2378_flash.ld ` .bss: block start by symbol or better save space